1. 题目描述(中等难度)

[success] 63. 不同路径 II

2. 解法一:动态规划

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
      if(null == obstacleGrid || obstacleGrid.length == 0){
          return 0;
      }
      int m = obstacleGrid.length;
      int n = obstacleGrid[0].length;
      int[][] dp = new int[m][n];

      dp[0][0] = 1 - obstacleGrid[0][0];
      //base case
      for(int i=1;i<m;i++){
          if(obstacleGrid[i][0] == 0 && dp[i-1][0] == 1){
             dp[i][0] = 1;
          }
      }

     for(int j=1;j<n;j++){
         if(obstacleGrid[0][j] == 0 && dp[0][j-1] == 1){
             dp[0][j] = 1;
         }
     }

      for(int i=1;i<m;i++){
          for(int j=1;j<n;j++){
              if(obstacleGrid[i][j] == 1){
                  continue;
              }
              dp[i][j] = dp[i-1][j] + dp[i][j-1]; 
          }
      }

     return dp[m-1][n-1];
    }
}
© gaohueric all right reserved,powered by Gitbook文件修订时间: 2021-12-08 23:22:22

results matching ""

    No results matching ""